Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/proto: add support for instantiating proto map fields #491

Merged
merged 1 commit into from
Jul 26, 2023

Conversation

tazjin
Copy link
Contributor

@tazjin tazjin commented Jul 25, 2023

With this change, it becomes possible to instantiate map<k,v> type fields in Protobuf messages from Starlark.

Maps can be constructed from any Starlark type that implements starlark.IterableMapping.

Protobuf messages can have most types as keys/values, so the type conformity is checked individually for each key/value pair (as the Starlark side of things is dynamically typed).

This has been tested against fairly complex proto messages containing maps.

Map operations apart from construction are not supported in this CL.

@google-cla
Copy link

google-cla bot commented Jul 25, 2023

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@tazjin
Copy link
Contributor Author

tazjin commented Jul 25, 2023

Fixed author email address for CLA.

@tazjin tazjin force-pushed the proto-maps branch 2 times, most recently from f05b3e6 to 63e081c Compare July 25, 2023 19:21
Copy link
Collaborator

@adonovan adonovan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this contribution!

lib/proto/proto.go Show resolved Hide resolved
lib/proto/proto.go Outdated Show resolved Hide resolved
lib/proto/proto.go Outdated Show resolved Hide resolved
lib/proto/proto.go Outdated Show resolved Hide resolved
With this change, it becomes possible to instantiate `map<k,v>` type
fields in Protobuf messages from Starlark.

Maps can be constructed from any Starlark type that implements
starlark.IterableMapping.

Protobuf messages can have most types as keys/values, so the type
conformity is checked individually for each key/value pair (as the
Starlark side of things is dynamically typed).

This has been tested against fairly complex proto messages containing
maps.

Map operations apart from construction are not supported in this CL.
@tazjin
Copy link
Contributor Author

tazjin commented Jul 26, 2023

Fixed those, thanks.

Copy link
Collaborator

@adonovan adonovan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Thanks again.

@adonovan adonovan merged commit 7dadff3 into google:master Jul 26, 2023
7 checks passed
@tazjin tazjin deleted the proto-maps branch July 26, 2023 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants